#!/usr/bin/perl -w

use XML::LibXSLT;
use XML::LibXML;
use CGI;
use CGI::Carp qw(fatalsToBrowser);

#imposto i path del file dati e della trasformata
my $fileDati="episodi_xml.xml";
my $trasformata="episodi.xsl";

#creo il parser
my $parser = XML::LibXML->new();
#creo l'oggetto per la trasformata
my $xslt = XML::LibXSLT->new();

#parser dei due documenti
my $doc = $parser->parse_file($fileDati);
my $xslt_doc = $parser->parse_file($trasformata);

#creazione del foglio di trasformazione
my $stylesheet = $xslt->parse_stylesheet($xslt_doc);

#applicazione del foglio di trasformazione
my $risultato = $stylesheet->transform($doc);

#serializzazione
my $nuovaPagina = $risultato->toString;

#modifica ai link:variabili per modificare i path
#vecchi path
my $srcPath = "src=\"";
my $hrefPath = "href=\"";
#nuovi 
my $newSRC = "src=\"";
my $newHREF = "noref=\"";

#preservo i link assoluti 
#noref serve per fare in modo che non vengano applicate le regole successive
$nuovaPagina =~ s/href=\"http/hnoref=\"http/g; 
#preservo i link alla stessa pagina
$nuovaPagina =~ s/href=\"#/hnoref=\"#/g; 
#preservo i link che tornano indietro con ..
$nuovaPagina =~ s/href=\"..\//hnoref=\"..\//g;
  
#modifica dei path dei link e css
$nuovaPagina =~ s/$hrefPath/$newHREF/g; 
#modifica dei path di immagini e script (src)
$nuovaPagina =~ s/$srcPath/$newSRC/g; 
   
#rimetto a posto i link che tornano indietro con ..
$nuovaPagina =~ s/hnoref=\"..\//href=\"..\//g;
$nuovaPagina =~ s/$hrefPath/$newHREF/g; 
    
#rimetto a posto i link preservati
$nuovaPagina =~ s/hnoref=\"/href=\"/g;  
$nuovaPagina =~ s/noref=\"/href=\"/g;
  
#invio della pagina al browser
print "Content-Type: text/html\n";
print "Content-Encoding: utf8\n\n";
  
print $nuovaPagina;
